package com.ljsw.util;

import java.util.Map;

import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
/**
 * 获取不同手机密度来适配(还在研究中)
 * 作者: 石锚
 * 版本: 1.0
 * 日期: 2015-10-20
 */
public class Screen {
	
	public static int displayWidth;//屏幕的宽
	public static int displayHeight;//屏幕的高
	private static double percent;    //缩放比例
	
	/**
	 * 获取屏幕分辨率
	 * @param a
	 */
	public static void getDisplay(Activity a){
		//可以得到分辨率等信息
		DisplayMetrics dm = new DisplayMetrics();
		a.getWindowManager().getDefaultDisplay().getMetrics(dm);
		displayWidth = dm.widthPixels;
		displayHeight = dm.heightPixels;
		if(displayWidth>=600){
			percent = 1.0;
		}else{
			percent = displayWidth/600.0;
		}
	}
	/**
	 * 设置字体大小(没写好)
	 * @param context
	 * @param textSize
	 * @return
	 */
	public static int getFontSize(Context context, int textSize){
		int screenHeight = displayHeight;
		// screenWidth = screenWidth > screenHeight ? 
		int rate = (int) (textSize * (float) screenHeight / 976);
		return rate;
	} 
	
	/**
	 * 根据屏幕分辨率和图片的比例缩放
	 * @param map
	 * @param a
	 */
	public static void changeViewSize(Map<Integer,View> map,Activity a){
		for (Map.Entry<Integer,View> item : map.entrySet()) {
			Drawable drawable = a.getResources().getDrawable(item.getKey());
			int width = drawable.getIntrinsicWidth();//获得图片的宽度
			int heigth = drawable.getIntrinsicHeight();//获得图片的高度
			LayoutParams lp = item.getValue().getLayoutParams();
			lp.width = (int) (width*percent);//获得缩放后的宽度
			lp.height = (int) (heigth*percent);//获得缩放后的高度
			item.getValue().setLayoutParams(lp);
		}
	}
	
	/** 
     * 根据手机的分辨率从 dp 的单位 转成为 px(像素) 
     */
	public static int dip2px(Context context,float dpValue){
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dpValue * scale + 0.5f);
	}
	/** 
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp 
     */
	public static int px2dip(Context context,float pxValue){
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (pxValue/scale+0.5f);
	}
	
	/**
     * 获取缩放后的图片宽度，为从网络加载图片时获取比例时做准备
     * @param a
     */
	public static void getWidth(Activity a){

	}
	
	/**
	 * 根据屏幕分辨率设置控件缩放
	 * @param map
	 * @param a
	 */
	public static void changeLayoutSize(Map<Integer,RelativeLayout> map,Activity a){	
		for (Map.Entry<Integer, RelativeLayout> item:map.entrySet()) {
			if(displayWidth>=600){
				LayoutParams lp=item.getValue().getLayoutParams();
				lp.height=150;
				item.getValue().setLayoutParams(lp);
			}
		}		
	}
	/**
	 * 根据屏幕分辨率设置控件缩放(TextView)
	 * @param map
	 * @param a
	 */
	public static void changeTextViewSize(Map<Integer,TextView> map,Activity a){	
		for (Map.Entry<Integer, TextView> item:map.entrySet()) {
			if(displayWidth>=600){
				LayoutParams lp=item.getValue().getLayoutParams();
				lp.height=50;
				item.getValue().setLayoutParams(lp);
			}else if(displayWidth>=480){
				LayoutParams lp=item.getValue().getLayoutParams();
				lp.height=40;
				item.getValue().setLayoutParams(lp);
			}
		}		
	}
	/**
	 * 根据屏幕分辨率设置控件缩放(EditText)
	 * @param map
	 * @param a
	 */
	public static void changeEditViewSize(Map<Integer,EditText> map,Activity a){	
		for (Map.Entry<Integer, EditText> item:map.entrySet()) {
			if(displayWidth>=600){
				LayoutParams lp=item.getValue().getLayoutParams();
				lp.height=50;
				item.getValue().setLayoutParams(lp);
			}else if(displayWidth>=480){
				LayoutParams lp=item.getValue().getLayoutParams();
				lp.height=40;
				item.getValue().setLayoutParams(lp);
			}
		}		
	}
	
}
